// pages/goods_detail/index.js
/*
1、发送请求，获取数据
2、点击轮播图，预览大图功能
    1、 给轮播图绑定点击事件
    2、调用小程序的api previewImage
3、加入购物车
    1、先绑定点击事件
    2、获取缓存中的购物车数据   数组格式
    3、先判断当前的商品是否已存在于购物车
    4、已经存在，修改商品数据  执行购物车数量++，重新把购物车数组填充回缓存中
    5、不存在于购物车数组中，直接给购物车数组添加一个新元素即可，戴上购买数量属性，重新把购物车数组填充进缓存中
    6、弹出用户提示信息
4、商品数据
    1、页面onshow的时候，加载缓存中的商品收藏的数据
    2、判断当前商品是不是被收藏
        1、被收藏则改变页面图标
        2、没有被收藏，不用做操作
    3、点击商品收藏按钮
        1、判断该商品是否存在于缓存数组中
        2、已经存在，把该商品删除掉
        3、商品存在，把商品添加到收藏数组中，存入缓存中
*/
import{ request } from "../../request/index.js";
import regeneratorRuntime from '../../lib/runtime/runtime';
Page({

    /**
     * 页面的初始数据
     */
    data: {
        goodsObj:{},
        //商品是否被收藏过
        isCollect:false
    },
    GoodsInfo:[],
    /**
     * 生命周期函数--监听页面加载
     */
    onShow:function () {
        let pages = getCurrentPages();
        let currentPage=pages[pages.length-1];
        let options = currentPage.options;
        const {goods_id} = options;
        console.log(goods_id);
        this.getGoodsDetail(goods_id);
    },
    //获取商品详情数据的方法
    async getGoodsDetail(goods_id){
        const goodsObj = await request({url:"/goods/detail",data:{goods_id}});
        //请求成功后给全局变量GoodsInfo赋值，用于点击放大
        this.GoodsInfo = goodsObj;
        //1、获取缓存中商品收藏数组
        let collect = wx.getStorageSync("collect")||[];
        //2、判断当前商品是否被收藏
        let isCollect=collect.some(v=>v.goods_id===this.GoodsInfo.goods_id)
        this.setData({
            //goodsObj 这里可以读出对象中的所有属性
            //下面部分做4个，是因为部分iPhone手机不识别webp格式的处理
            goodsObj:{
                goods_name:goodsObj.goods_name,
                goods_price:goodsObj.goods_price,
                //iphone部分手机不识别webp图片格式
                //最好是找到后台，让后台修改
                //如若是前端临时修改，确保后台存在1.webp，改为1.jpg
                goods_introduce:goodsObj.goods_introduce.replace(/\.webp/g,'.jpg'),
                pics:goodsObj.pics,
            },
            isCollect
        })
        console.log(goodsObj);
    },
    //点击轮播图  放大预览
    handlePrevewImage(e){
        //1、先构造需要预览的图片数组
        const urls= this.GoodsInfo.pics.map(v=>v.pics_mid);
        //接收传递过来的图片参数
        const current = e.currentTarget.dataset.url;
        wx-wx.previewImage({
            urls,
            current,
        })
    },
    //点击加入购物车
    handleCartAdd(){
        //1、获取缓存中的购物车数组
        let cart=wx.getStorageSync("cart")||[];
        //判断商品对象是否存在于购物车数组中
        let index = cart.findIndex(v=>v.goods_id===this.GoodsInfo.goods_id)
        if(index===-1){
            //不存在，第一次添加
            this.GoodsInfo.num=1;
            this.GoodsInfo.checked=true;
            cart.push(this.GoodsInfo);
        }else{
            //已经存在购物车数据，执行num++
            cart[index].num++;
        }
        //、把购物车重新添加会缓存中
        wx.setStorageSync("cart",cart);
        //弹窗提示
        wx.showToast({
          title: '添加成功',
          icon:'success',
          //防止用户手抖，疯狂点击按钮
          mask:true,
        })
    },
    //点击商品收藏图标
    handleCollect(){
        let isCollect=false;
        //1、获取缓存中的商品收藏数组
        let collect = wx.getStorageSync("collect")||[];
        //2、判断该商品是否被收藏过
        let index = collect.findIndex(v=>v.goods_id===this.GoodsInfo.goods_id);
        //3、当index！=-1表示已经收藏过
        if(index!==-1){
            collect.splice(index,1);
            isCollect = false;
            wx.showToast({
              title: '取消成功',
              icon:'success',
              mask:true
            })
        }else{
            //没有收藏过
            collect.push(this.GoodsInfo);
            isCollect=true;
            wx.showToast({
                title: '收藏成功',
                icon:'success',
                mask:true
              })
        }
        //4、把数组存入到缓存中
        wx.setStorageSync("collect", collect);
        //5、修改data中的属性 isCollect
        this.setData({
            isCollect
        })
    }
})